/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package agenda.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author Antonio
 */
public class Conexao {
    // parametros.
    private static final String driver = "org.postgresql.Driver";
    private static String url = "jdbc:postgresql://127.0.0.1:5432/pos2012";
    private static String usuario = "postgres";
    private static String senha = "postgres123";
    private static Connection conn = null;
    // abrir conexao com o banco de dados.

    public static Connection getInstance() {
        if (conn == null) {
            // preciso abrir.
            try {
                Class.forName(driver);
                conn = DriverManager.getConnection(url, usuario, senha);
//                JOptionPane.showMessageDialog(null, "Conexão Aberta com Sucesso!");
                conn.setAutoCommit(false);
            } catch (ClassNotFoundException ex) {
                JOptionPane.showMessageDialog(null, "Driver do Banco não Encontrado.");
                System.exit(1);
            } catch (SQLException ex) {
                ex.printStackTrace();
                if (JOptionPane.showConfirmDialog(null, "Erro ao Abrir Conexao!\n" +
                                              "Erro: " + ex.getMessage() + "\nConfirmar os dados e tentar novamente?", "Erro ao Abrir Conexao! Tentar novamente?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
                
                    url = JOptionPane.showInputDialog("URL", url);
                    usuario = JOptionPane.showInputDialog("Usuario", usuario);
                    senha = JOptionPane.showInputDialog("Senha", senha);

                    return getInstance();
                } else {
                    System.exit(1);
                }
            }
        }
        return conn;
    }

    public static boolean commit() {
        if (conn == null) {
            return false;
        }
        try {
            conn.commit();
            return true;
        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
    }
    public static boolean rollback() {
        if (conn == null) {
            return false;
        }
        try {
            conn.rollback();
            return true;
        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
    }
}
















